package com.magina.common.globalparam;

import com.google.common.collect.Maps;
import com.magina.common.exception.BusinessException;
import com.magina.common.proxy.RequestContextProxy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 文件名称：GlobaleFacade</br>
 * 初始作者： Magina.Hu</br>
 * 创建日期： 2019/4/23</br>
 * 功能说明：  <br/>
 * =================================================<br/>
 * 修改记录：<br/>
 * 修改作者 日期 修改内容<br/>
 * ================================================<br/>
 * Copyright (c) 2019-2020 .All rights reserved.<br/>
 */
@Component
public class GlobaleParamCom {

    /**
     * redis工具类
     */
    @Resource
    private RedisTemplate<Serializable, Object> redisTemplate;


    /**
     * 方法描述: 模拟登录</br>
     * 初始作者: Magina.Hu<br/>
     * 创建日期: 2019/4/23 <br/>
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     * @param  入参对象
     * @return  返回数据
     * @throws Exception 异常
     */
    public Object login(Map<String,String> param) throws BusinessException {

        String username = param.get("userName");
        HttpServletRequest request = RequestContextProxy.getRequest();
        Map result = Maps.newConcurrentMap();
        if ("admin".equals(username)) {// 默认admin
            result.put("userName","admin");
            result.put("nickName","张三");
            result.put("token","9a69cd-09a69cd-012d4-5f8ea4");
        } else {
            throw new BusinessException("用户名密码不存在");
        }
        request.getSession().setAttribute("user", result);
        return result;
    }

    /**
     * 方法描述: 公共取全局变量 </br>
     * 初始作者: Magina.Hu<br/>
     * 创建日期: 2019/4/23 <br/>
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     * @param  入参对象
     * @return  返回数据
     * @throws Exception 异常
     */
    @SuppressWarnings("unchecked")
    public Map<String, Object> getDicts(String key) {
        Map<String, Object> map = (Map<String, Object>) this.redisTemplate.opsForValue().get(key);
        return map;
    }

}
